package br.com.ebc.icontatos.converter;

import javax.annotation.Resource;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import br.com.ebc.icontatos.model.Cidade;
import br.com.ebc.icontatos.repository.CidadeRepository;

public class CidadeConverter implements Converter{

	@Resource
	private CidadeRepository cidadeDAO;
	
	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		if (value == null || value.length() == 0 || value.equals("-- Selecione --")){
			return null;
		}
		
		Long id = new Long(value);
		Cidade c = new Cidade();
		c.setIdCidade(id);
		c = cidadeDAO.find(c.getIdCidade());
		return c;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if(value == null){
			return null;
		}
		
		if(value instanceof Cidade){
			Cidade c = new Cidade();
			return c.getIdCidade() == null ? "" : c.getIdCidade().toString();
		} else {
			throw new IllegalArgumentException("object " + value + " is of type " + value.getClass().getName() + "; expected type: model.Cidade");
		}
	}

	public CidadeRepository getCidadeDAO() {
		return cidadeDAO;
	}

	public void setCidadeDAO(CidadeRepository cidadeDAO) {
		this.cidadeDAO = cidadeDAO;
	}

}
